package org.seedltd.upms.service.detection;

import java.util.List;

import org.seedltd.core.base.IBaseService;
import org.seedltd.upms.model.detection.entity.DetectionTerminalPipeline;
import org.seedltd.upms.model.detection.form.DetectionTerminalPipelineForm;
import org.seedltd.upms.model.detection.vo.CommodityInfo;
import org.seedltd.upms.model.detection.vo.DetectionTerminalPipelineVO;

/**
 * 售卖机货道维护业务接口
 * 
 * @author laizuan
 * @since 2021/09/23
 * @version 1.0
 */
public interface DetectionTerminalPipelineService extends IBaseService<DetectionTerminalPipeline> {

    /**
     * 根据售卖机主键获取货道数据
     * 
     * @param terminalId
     *            售卖机主键
     * @return
     */
    List<DetectionTerminalPipelineVO> listByTerminalId(Long terminalId);

    /**
     * 获取到有效并且可售数量最多的一个货道数据
     * 
     * @param terminalId
     *            售卖机主键
     * @return
     */
    DetectionTerminalPipeline getByTerminalId(Long terminalId);

    /**
     * 货道数量
     * 
     * @param id
     *            主键
     * @param presentNumber
     *            修改后的可售数量
     * @return
     */
    boolean updatePipelineNumber(Long id, Integer presentNumber);

    /**
     * 修改数据
     *
     * @param commoditys
     *            管道数据
     * @param terminalId
     *            售卖机主键
     * @return 是否修改成功。 true: 成功，false:失败
     */
    boolean update(List<CommodityInfo> commoditys, Long terminalId);

    /**
     * 更新货道信息
     * 
     * @param forms
     *            货道信息
     * @return
     */
    boolean update(List<DetectionTerminalPipelineForm> forms);

    /**
     * 根据售卖机主键删除数据
     *
     * @param terminalId
     *            售卖机主键
     * @return 是否删除成功。 true: 成功，false:失败
     */
    boolean deleteByTerminalId(Long terminalId);
}